from typing import Generic, Dict, List
from abc import ABC, abstractmethod
from TypeDefinition import V, D


class Prefenerce(Generic[V, D], ABC):
    def __init__(self, variables: List[V]) -> None:
        self.variables = variables

    @abstractmethod
    def preferences(self, old_assignment: Dict[V, D],  new_assignment: Dict[V, D]) -> bool:
        return new_assignment

